package com.itheima.d1_file;

import java.io.File;
import java.util.Arrays;

/**
 * 目标：掌握File提供的遍历文件夹的方法。
 *      只能拿到一级文件对象，二级的文件对象，需要遍历拿
 *
 * 当主调是文件，或者路径不存在时，返回null
 * 当主调是空文件夹时，返回一个长度为0的数组
 * 当主调是一个有内容的文件夹时，将里面所有一级文件和文件夹的路径放在File数组中返回
 * 当主调是一个文件夹，且里面有隐藏文件时，将里面所有文件和文件夹的路径放在File数组中返回，包含隐藏文件
 * 当主调是一个文件夹，但是没有权限访问该文件夹时，返回null
 */
public class FileTest4 {
    public static void main(String[] args) {
        // 1、public String[] list()：获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
        File f1 = new File("D:\\Idea\\resource");
        String[] names = f1.list();
        for (String name : names) {
            System.out.println(name);
        }

        System.out.println("------------------listFiles--------------");
        // 2、public File[] listFiles():（重点）获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回（重点）
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }

        System.out.println("---------------------");
        //看上面的注释，不存在则返回null
        File f = new File("D:\\Idea\\resource\\aaa");
        File[] files1 = f.listFiles();
        System.out.println(Arrays.toString(files1));

        System.out.println("----------自己试一试-------------");
        File zeng1 = new File("D:\\Idea\\resource");
        String[] list = zeng1.list();
        Arrays.stream(list).forEach(s-> System.out.println(s));

        System.out.println("---");
        File zeng2 = new File("D:\\Idea\\resource");
        File[] files2 = zeng2.listFiles();
        Arrays.stream(files2).forEach(s-> System.out.println(s.getAbsoluteFile()));
        Arrays.stream(files2).forEach(s-> System.out.println(s));   //这俩效果一样
    }
}











